Skip to content

feat: integrate iOS credential autofill#21

Open
kylebeee wants to merge 2 commits into
mainfrom
feat/ios-credential-autofill
Open

feat: integrate iOS credential autofill#21
kylebeee wants to merge 2 commits into
mainfrom
feat/ios-credential-autofill

Conversation

@kylebeee
Copy link
Copy Markdown

@kylebeee kylebeee commented May 14, 2026

Summary

  • Configure Rocca for passkey AutoFill associated domains and iOS entitlements
  • Sync native iOS AutoFill credentials during bootstrap and app resume
  • Remove native credentials when passkeys are deleted
  • Prevent repeated biometric checks by reusing an active bootstrap run instead of starting overlapping key reloads
  • Simplify passkey list display and update tests

Dependency

Draft until algorandfoundation/react-native-passkey-autofill#11 is merged, published to npm, and Rocca is updated to depend on that published package version.

Validation

  • npm run fmt:check
  • npm run lint
  • npm run type-check
  • npm test -- --runInBand

@kylebeee kylebeee marked this pull request as ready for review May 20, 2026 16:38
@bwmx bwmx requested a review from Copilot May 21, 2026 10:19
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Integrates iOS passkey AutoFill/Credential Provider support into Rocca by adding iOS configuration (associated domains + entitlements) and synchronizing native-stored credentials into the app’s passkey store during bootstrap/resume, while also tightening bootstrap concurrency to avoid overlapping biometric prompts.

Changes:

  • Add iOS AutoFill configuration (associated domains, entitlements) and make passkey AutoFill site/label configurable via env/app config.
  • Sync native-stored passkey credentials into passkeysStore during bootstrap and delete native credentials when passkeys are removed.
  • Prevent overlapping bootstraps by reusing an in-flight bootstrap promise; simplify Passkeys UI display and update tests accordingly.

Reviewed changes

Copilot reviewed 13 out of 14 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
stores/logs.ts Switches logs store to use @tanstack/store Store.
README.md Adds a note about dependency/publishing requirements for the iOS AutoFill integration.
package.json Bumps/pins @algorandfoundation/react-native-passkey-autofill to 1.0.0-canary.16.
package-lock.json Locks updated dependency versions for passkey autofill + transitive deps.
lib/credentialProvider.ts Adjusts “credential provider service enabled” logic (Android-specific).
lib/bootstrap.ts Adds native credential sync, derived key setup for native side, and bootstrap de-duping.
hooks/useConnection.ts Updates fetchSecret calls to the new options-based signature.
extensions/passkeys-keystore/extension.ts Deletes native credentials when passkeys are removed.
dialogs/DidDocumentModal.tsx Narrows JSONTree input via explicit casting.
app/passkeys.tsx Simplifies passkey list fields (website + username).
app/import.tsx Updates bootstrap invocation to match new signature.
app/_layout.tsx Triggers bootstrap on app resume (after backgrounding) and on passkey events.
app.config.js Adds iOS associated domains/entitlements and makes AutoFill site/label configurable.
tests/CollectionScreens-test.tsx Updates Passkeys screen test expectations for new UI fields.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread stores/logs.ts
@@ -1,4 +1,4 @@
import { Store } from '@tanstack/react-store';
import { Store } from '@tanstack/store';
Copy link
Copy Markdown
Contributor

@bwmx bwmx May 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct (I see this change unneeded and should use @tanstack/react-store)

Comment thread lib/bootstrap.ts
@bwmx
Copy link
Copy Markdown
Contributor

bwmx commented May 21, 2026

LGTM functionally, if behavior works as intended on iOS let's get it merged after addressing the minor nit above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants